import {
  StringIndexer,
  _min,
} from "mmb";

export type ApiInvokerFilter = (v: StringIndexer) => boolean;
export type ApiInvokerMap = (v: StringIndexer) => StringIndexer;

export interface ApiInvokerBuilder {
  data?: StringIndexer;
  filter?: ApiInvokerFilter;
  map?: ApiInvokerMap;
  setFilter: (v: ApiInvokerFilter) => ApiInvokerBuilder;
  setMap: (v: ApiInvokerMap) => ApiInvokerBuilder;
  setBody: (v: StringIndexer) => ApiInvokerBuilder;
  exec: () => Promise<any>;
}

export const defaults = {
  setFilter: (v: ApiInvokerFilter) => defaults,
  setMap: (v: ApiInvokerMap) => defaults,
  setBody: (v: StringIndexer) => defaults,
  exec: () => Promise.resolve(true),
};